package fifteenth_day;

import java.util.HashMap;
import java.util.Map;

/**
 *  在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1（需要区分大小写）.（从0开始计数）
 *
 * 数据范围：0≤n≤100000 \le n \le 100000≤n≤10000，且字符串只有字母组成。
 * 要求：空间复杂度 O(n)，时间复杂度 O(n)
 */
public class FirstNotRepeatingChar {
    public static int firstNotRepeatingChar(String str) {
        Map<Character, Boolean> map = new HashMap<>();
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (!map.containsKey(c)) {
                map.put(c, true);
            } else {
                map.replace(c, false);
            }
        }
        for (int i = 0; i < str.length(); i++) {
            if (map.get(str.charAt(i))) {
                return i;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        String str = "google";
        System.out.println(firstNotRepeatingChar(str));
    }
}
